JavaMail API ব্যবহার করে HTML ই-মেইল পাঠানোর একটি বাস্তব উদাহরণ এখানে দেয়া হল। HTML ই-মেইল পাঠাতে হলে আপনাকে মেইলের কন্টেন্ট text/html টাইপ হিসাবে সেট করতে হবে, যাতে ই-মেইলটি HTML হিসেবে রেন্ডার হয় এবং আপনি স্টাইল, ইমেজ, লিঙ্ক, টেবিল, বাটন ইত্যাদি যোগ করতে পারেন।
HTML Email পাঠানোর উদাহরণ:
এখানে আমরা একটি HTML ই-মেইল তৈরি করবো যা একটি বেসিক HTML কনটেন্ট, লিঙ্ক, ইমেজ এবং টেবিল ধারণ করবে।
প্রাক-প্রস্তুতি:
- SMTP সার্ভারের ঠিকানা: Gmail-এর SMTP সার্ভার ব্যবহার করা হবে (আপনি অন্য সার্ভারও ব্যবহার করতে পারেন)।
- পাসওয়ার্ড বা অ্যাপ পাসওয়ার্ড: যদি Gmail ব্যবহার করেন, তবে আপনাকে
App Passwordব্যবহার করতে হতে পারে (কারণ সাধারণ পাসওয়ার্ড ব্যবহার করলে অ্যাকাউন্টের সুরক্ষা সমস্যা হতে পারে)।
HTML ই-মেইল পাঠানোর কোড:
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.Properties;
public class SendHtmlEmail {
public static void main(String[] args) {
// SMTP সার্ভারের জন্য প্রপার্টি সেট করা
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.gmail.com"); // SMTP সার্ভার (Gmail)
properties.put("mail.smtp.port", "587"); // SMTP পোর্ট (TLS এর জন্য 587)
properties.put("mail.smtp.auth", "true"); // অথেন্টিকেশন সক্রিয় করা
properties.put("mail.smtp.starttls.enable", "true"); // TLS সক্রিয় করা
// JavaMail সেশন তৈরি করা
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("your-email@gmail.com", "your-app-password");
}
});
try {
// মেইল মেসেজ তৈরি করা
Message message = new MimeMessage(session);
// প্রেরকের ঠিকানা
message.setFrom(new InternetAddress("your-email@gmail.com"));
// প্রাপকের ঠিকানা
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
// মেইলের বিষয়
message.setSubject("HTML Email from JavaMail API");
// HTML কনটেন্ট তৈরি
String htmlContent = "<h1>Welcome to JavaMail API</h1>"
+ "<p>This is a <b>HTML</b> email sent using JavaMail API.</p>"
+ "<p><a href='http://www.example.com'>Click here</a> to visit our website.</p>"
+ "<p>Below is a table with sample data:</p>"
+ "<table border='1'>"
+ "<tr><th>Serial No</th><th>Name</th><th>Age</th></tr>"
+ "<tr><td>1</td><td>John Doe</td><td>25</td></tr>"
+ "<tr><td>2</td><td>Jane Smith</td><td>30</td></tr>"
+ "</table>"
+ "<img src='cid:image1'/>"; // CID ব্যবহার করে inline image
// MimeBodyPart ব্যবহার করে HTML কনটেন্ট যোগ করা
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(htmlContent, "text/html");
// MIME multipart তৈরি এবং MIME body part যোগ করা
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(mimeBodyPart);
// ইমেজ অ্যাটাচমেন্ট যোগ করা (inline image)
MimeBodyPart imagePart = new MimeBodyPart();
DataSource fds = new FileDataSource("path/to/your/image.jpg");
imagePart.setDataHandler(new DataHandler(fds));
imagePart.setHeader("Content-ID", "<image1>");
mimeMultipart.addBodyPart(imagePart);
// MIME multipart কনটেন্ট সেট করা
message.setContent(mimeMultipart);
// মেইল পাঠানো
Transport.send(message);
System.out.println("HTML Email sent successfully!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
কোডের বিস্তারিত ব্যাখ্যা:
- SMTP প্রপার্টি কনফিগারেশন:
mail.smtp.host: SMTP সার্ভারের ঠিকানা। এখানে Gmail ব্যবহার করা হয়েছে।mail.smtp.port: পোর্ট নম্বর। Gmail এর জন্য TLS সক্রিয় করার জন্য587পোর্ট।mail.smtp.auth: SMTP সার্ভারে অথেন্টিকেশন সক্ষম করা।mail.smtp.starttls.enable: TLS এনক্রিপশন সক্ষম করা।
- Session:
Session.getInstance(properties): JavaMail সেশন তৈরি করা এবং সেটির সাথে প্রপার্টি কনফিগারেশন অ্যাসাইন করা।Authenticator: প্রেরকের ই-মেইল এবং পাসওয়ার্ড ব্যবহারের জন্য অথেন্টিকেশন সন্নিবেশিত করা।
- MimeMessage:
message.setFrom(): প্রেরকের ই-মেইল ঠিকানা সেট করা।message.setRecipients(): প্রাপকের ই-মেইল ঠিকানা সেট করা।message.setSubject(): মেইলের বিষয় সেট করা।
- HTML কনটেন্ট:
- HTML কনটেন্ট একটি স্ট্রিং হিসেবে তৈরি করা হয়েছে। এতে টেক্সট, লিঙ্ক, টেবিল, এবং একটি ইমেজ (CID ব্যবহার করে) অন্তর্ভুক্ত রয়েছে।
- MimeMultipart:
MimeMultipartহল একটি কন্টেইনার যা একাধিকMimeBodyPartধারণ করে, যেখানে প্রতিটিMimeBodyPartএকটি অংশের কন্টেন্ট (যেমন HTML টেক্সট, অ্যাটাচমেন্ট, ইমেজ) ধারণ করে।
- Inline ইমেজ (CID):
src='cid:image1': HTML কনটেন্টে inline ইমেজ ব্যবহার করা হয়েছে।cid(Content-ID) এর মাধ্যমে ইমেজটি সন্নিবেশিত করা হয়েছে এবং এর সাথে একটিMimeBodyPartযোগ করা হয়েছে।
- Transport.send():
- মেইল পাঠানোর জন্য
Transport.send(message)ব্যবহার করা হয়েছে।
- মেইল পাঠানোর জন্য
ইমেজ যোগ করা:
- ইমেজটি ইনলাইন অ্যাটাচমেন্ট হিসেবে যোগ করা হয়েছে।
cid:image1এবংContent-IDহেডারের মাধ্যমে ইমেজটি মেইলের মধ্যে রেন্ডার করা হয়।
কিছু অতিরিক্ত বৈশিষ্ট্য:
- টেবিল এবং লিঙ্ক: HTML টেবিল এবং লিঙ্ক পাঠানোর জন্য, HTML কনটেন্টে
<table>,<a>ট্যাগ ব্যবহার করা হয়েছে। - CSS স্টাইল: আপনি HTML ই-মেইলে CSS স্টাইলও অন্তর্ভুক্ত করতে পারেন। উদাহরণস্বরূপ,
<style>ট্যাগ ব্যবহার করে ই-মেইলের ডিজাইন কাস্টমাইজ করা যায়।
JavaMail API ব্যবহার করে HTML ই-মেইল পাঠানো একটি শক্তিশালী উপায় যার মাধ্যমে আপনি সহজেই সুন্দর ডিজাইন করা ই-মেইল পাঠাতে পারেন। আপনি HTML কনটেন্ট, টেবিল, লিঙ্ক, স্টাইল এবং ইমেজসহ ই-মেইল তৈরি করতে পারেন এবং JavaMail API এর মাধ্যমে তা প্রেরণ করতে পারেন।
Read more